package Ecras;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;

import Controladores.CtlPerfil;
import Utilities.Utilizador;

public class EcraPerfil {
	private static final int IMG_X = 130;
	private static final int IMG_Y = 146;

	private JFrame framePerfil;
	private JTextField textCidade;
	private JTextField textEscola;
	private JTextField textMail;
	private JPanel panel;
	private JPanel panel_1;
	private JLabel labelFoto;
	private JList seguidores;
	private Utilizador u;
	ImageIcon myPicture;
	BufferedImage img;

	public EcraPerfil(Utilizador u) {

		this.u = u;

		framePerfil = new JFrame();
		framePerfil.setTitle("Consulta de Perfil");
		framePerfil.setSize(502, 464);
		framePerfil.getContentPane().setLayout(null);

		JLabel lblPerfil = new JLabel("Perfil de Utilizador de:");
		lblPerfil.setBounds(10, 11, 129, 14);
		framePerfil.getContentPane().add(lblPerfil);

		JLabel lbluser = new JLabel(u.getNome());
		lbluser.setBounds(140, 11, 106, 14);
		framePerfil.getContentPane().add(lbluser);

		panel = new JPanel();
		panel.setBorder(new LineBorder(new Color(0, 0, 0), 1, true));
		panel.setBounds(20, 36, 445, 320);
		framePerfil.getContentPane().add(panel);
		panel.setLayout(null);

		JLabel lblCidade = new JLabel("Cidade:");
		lblCidade.setBounds(10, 11, 46, 14);
		panel.add(lblCidade);

		JLabel lblEmail = new JLabel("E-Mail:");
		lblEmail.setBounds(10, 36, 46, 14);
		panel.add(lblEmail);

		textCidade = new JTextField();
		textCidade.setBounds(55, 8, 140, 20);
		panel.add(textCidade);
		textCidade.setColumns(10);

		JLabel lblEscola = new JLabel("Escola:");
		lblEscola.setBounds(214, 11, 46, 14);
		panel.add(lblEscola);

		textEscola = new JTextField();
		textEscola.setBounds(259, 8, 176, 20);
		panel.add(textEscola);
		textEscola.setColumns(10);

		textMail = new JTextField();
		textMail.setBounds(55, 33, 380, 20);
		panel.add(textMail);
		textMail.setColumns(10);

		JScrollPane scrollPane = new JScrollPane();
		JLabel title = new JLabel("Seguido por:");

		CtlPerfil cp = new CtlPerfil();

		seguidores = new JList(cp.preencheListSeguidores(u).toArray());

		scrollPane.setViewportView(seguidores);
		JPanel panel_2 = new JPanel();
		panel_2.setLayout(new BorderLayout());
		panel_2.setBounds(259, 76, 162, 174);
		panel_2.add(title, BorderLayout.NORTH);
		panel_2.add(scrollPane, BorderLayout.CENTER);
		panel.add(panel_2);

		JButton btnDetalhes = new JButton("Detalhes do Utilizador");
		btnDetalhes.setBounds(259, 276, 162, 23);
		panel.add(btnDetalhes);
		btnDetalhes.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				pedirDetalhes();
			}
		});

		JButton btnSugest = new JButton("Sugest\u00F5es");
		btnSugest.setBounds(24, 276, 171, 23);
		panel.add(btnSugest);

		panel_1 = new JPanel();
		panel_1.setBounds(21, 80, 217, 174);
		panel.add(panel_1);

		labelFoto = new JLabel("Fotografia");
		panel_1.add(labelFoto);

		JLabel image_Panel = new JLabel();
		image_Panel.setBounds(0, 156, 106, -156);
		framePerfil.getContentPane().add(image_Panel);
		image_Panel.setLayout(new FlowLayout());
		panel_1.add(image_Panel);

		String directory = cp.getFotografia(u);
		char barra = '\\';
		if (directory != null) {
			String directory2 = "";
			for (int i = 0; i < directory.length(); i++) {
				if (directory.charAt(i) == barra) {
					directory2 += "\\\\";
				} else
					directory2 += directory.charAt(i);

			}
			System.out.println(directory2);
			myPicture = new ImageIcon(directory2 + ".gif");
			int racioX = myPicture.getIconWidth() / IMG_X;
			int racioY = myPicture.getIconHeight() / IMG_Y;
			double maxRacio = Math.max(racioX, racioY);
			Image image = myPicture.getImage();
			image = image.getScaledInstance(
					(int) (myPicture.getIconWidth() / maxRacio),
					(int) (myPicture.getIconHeight() / maxRacio),
					java.awt.Image.SCALE_SMOOTH);

			image_Panel.setBounds(21, 80, 217, 174);
			myPicture.setImage(image);
			image_Panel.setIcon(myPicture);
		}

		JButton btnFechar = new JButton("Fechar");
		btnFechar.setBounds(376, 392, 89, 23);
		btnFechar.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				framePerfil.dispose();

			}
		});
		framePerfil.getContentPane().add(btnFechar);
		this.preencherLabel(false, u.getCidade(), u.getEscola(), u.getEmail());
		framePerfil.setVisible(true);
		framePerfil.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void pedirDetalhes() {
		CtlPerfil cp = new CtlPerfil();
		if (seguidores.isSelectionEmpty()
				|| seguidores.getSelectedValue() == null) {
			JOptionPane.showMessageDialog(null,
					"Tem que selecionar um utilizador");
		} else {
			new EcraPerfil(cp.pedirDetalhes(seguidores.getSelectedValue()
					.toString()));
		}
	}

	public void addButton(JButton button) {
		panel.add(button);
		panel.add(panel_1);
	}

	public String[] getText() {
		String[] dados = new String[3];
		dados[0] = textMail.getText();
		dados[1] = textEscola.getText();
		dados[2] = textCidade.getText();
		return dados;
	}

	public void preencherLabel(boolean meuPerfil, String cidade, String escola,
			String email) {

		textCidade.setEditable(meuPerfil);
		textEscola.setEditable(meuPerfil);
		textMail.setEditable(meuPerfil);
		textCidade.setText(cidade);
		textEscola.setText(escola);
		textMail.setText(email);
	}
}
